package com.changzhi.service;

import com.changzhi.common.util.Result;
import com.changzhi.ldyl.model.UserGift;
import com.changzhi.ldyl.model.dto.CarnivalBeastDto;
import com.changzhi.ldyl.model.dto.CarnivalBoxDto;
import com.changzhi.ldyl.model.dto.CarnivalCardDto;
import com.changzhi.ldyl.model.vo.*;

import java.util.List;
import java.util.Map;

/**
 * @Description:嘉年华
 * @author: 小落
 * @date: 2021年01月12日
 */
public interface CarnivalService {

	/**
	 * 处理mq礼物数据业务逻辑
	 * @param userGift
	 */
	void doMqDataByUserGift(UserGift userGift);

	/**
	 * 获取奖品
	 * @param activityId
	 * @param type
	 * @return
	 */
	List<NewLotteryVo> getPrizeList(Integer activityId, Integer type);

	/********************************** 拼图汇 **************************************/
	/**
	 * 拼图列表
	 */
	CarnivalCardVo cardList(CarnivalCardDto carnivalCardDto);

	/**
	 * 厅拼图榜
	 * @param carnivalCardDto
	 * @return
	 */
	PageVo<CarnivalCardVo> cardRankings(CarnivalCardDto carnivalCardDto);

	/**
	 * 领取奖励
	 */
	List<GiftConfigVo> receiveAward(CarnivalCardDto carnivalCardDto);

	/**
	 * 宝箱展示
	 */
	CarnivalBoxVo showBox(CarnivalBoxDto carnivalBoxDto);

	/**
	 * 开宝箱
	 */
	Map<String, Object> openBox(CarnivalBoxDto carnivalBoxDto);

	/**
	 * 获取推送消息
	 * @param carnivalBoxDto
	 * @return
	 */
	Map<String, Object> getPush(CarnivalBoxDto carnivalBoxDto);

	/********************************** 年兽作战 **************************************/

	/**
	 * 更新年兽血量
	 */
	void updateBossInfo();

	/**
	 *	建立长连接返回初始数据（根据时间段返回作战场次id）
	 */
	CarnivalBeastVo getInitBeastInfo(String userId);

	/**
	 * 定时初始化每场年兽作战数据
	 */
	void initBeastInfo();


	/**
	 * 年兽作战数据
	 */
	CarnivalBeastVo beastInfo(String userId);

	/**
	 * 打年兽
	 */
	Result attackBeast(String userId, Integer harm);

	/**
	 * 年兽伤害榜
	 */
	List<CarnivalBeastVo> harmRankings(CarnivalBeastDto carnivalBeastDto);

	/**
	 * 实时榜
	 */
	List<CarnivalBeastVo> realTimeRankings();

	/**
	 * 特殊奖励
	 * @param carnivalCardDto
	 * @return
	 */
	Map<String, GiftConfigVo> specialPrize(CarnivalCardDto carnivalCardDto);

	/**
	 * 推送年兽作战信息
	 */
	Map<String, Object> pushBeastInfo();

	/**
	 * 下场年兽开始时间
	 * @return
	 */
	String getNextStartTime();

	/**
	 * 清除假人气
	 */
	void clearChannelReBoot();

	void addChannelRobotByFirst(String channelId, Long id);

	/********************************** 情人节 **************************************/

	List<NewLotteryVo> lotteryBatch(String userId, Integer times);


}
